package com.ruoyi.djData.service;

import com.ruoyi.djData.domain.pad.DjTaskResqDTO;
import com.ruoyi.djData.domain.plat.DataDj;

import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

/**
 * 电机数据处理Service接口
 * 
 * @author ruoyi
 * @date 2024-01-17
 */
public interface IDataDjService 
{
    /**
     * 查询电机数据处理
     * 
     * @param djId 电机数据处理主键
     * @return 电机数据处理
     */
    public DataDj selectDataDjByDjId(Long djId);

    /**
     * 查询电机数据处理列表
     * 
     * @param dataDj 电机数据处理
     * @return 电机数据处理集合
     */
    public List<DataDj> selectDataDjList(DataDj dataDj);

    /**
     * 新增电机数据处理
     * 
     * @param dataDj 电机数据处理
     * @return 结果
     */
    public int insertDataDj(DataDj dataDj);

    /**
     * 修改电机数据处理
     * 
     * @param dataDj 电机数据处理
     * @return 结果
     */
    public int updateDataDj(DataDj dataDj);

    /**
     * 批量新增电机数据
     */
    int batchDataDj(List<DataDj> dataDjs);

    /**
     * 批量删除电机数据处理
     * 
     * @param djIds 需要删除的电机数据处理主键集合
     * @return 结果
     */
    public int deleteDataDjByDjIds(Long[] djIds);

    /**
     * 删除电机数据处理信息
     * 
     * @param djId 电机数据处理主键
     * @return 结果
     */
    public int deleteDataDjByDjId(Long djId);

    /**
     * 删除电机数据处理
     *
     * @param dataTaskId
     * @return 结果
     */
    public int deleteDataDjByDataTaskId(Long dataTaskId);

    /**
     * 变更电机数据状态
     * @param dataTaskId
     * @return
     */
    int updateDataDjByDataTaskId(Long dataTaskId);

    /**
     * 变更电机数据状态
     * @param djId
     * @return
     */
    int updateDataKDjByDId(Long djId);

    /**
     * 根据任务id获取所有电机数据
     * @param dataTaskId
     * @return
     */
    Future<List<DataDj>> selectAllByDataTaskId(Long dataTaskId);

    /**
     * 根据任务Id获取空压机任务数据
     */
    DjTaskResqDTO selectDjTaskByDataTaskId(Long dataTaskId) throws ExecutionException, InterruptedException;

    /**
     * 电机参数修改
     */
    DataDj modifyDjParam(DataDj dataDj);

    /**
     * 电机报告导入
     */
    String dataDjImportReport(DataDj dataDj);
}
